package com.xqboss.apps.vo.synthesis;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.xqboss.apps.dto.synthesis.SynthesisPlanResultDto;
import com.xqboss.apps.vo.sys.SysAnnouncementMsgVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
@ApiModel(value = "合成活动详情")
public class SynthesisDetailVo implements Serializable {

    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "id")
    private Long id;

    @ApiModelProperty(value = "活动名称")
    private String name;

    @ApiModelProperty(value = "主图")
    private String mainImg;

    @ApiModelProperty(value = "开始时间")
    private LocalDateTime beginTime;

    @ApiModelProperty(value = "结束时间")
    private LocalDateTime endTime;

    @ApiModelProperty(value = "分类id[category表]")
    private Long categoryId;

    @ApiModelProperty(value = "分类名称")
    private String categoryName;

    @ApiModelProperty(value = "总库存")
    private Integer totalNum;

    @ApiModelProperty(value = "已合成数量")
    private Integer salesNum;

    @ApiModelProperty(value = "剩余库存")
    private Integer num;

    @JsonIgnore
    @ApiModelProperty(value = "白名单库存", hidden = true)
    private Integer whiteNum;

    @JsonIgnore
    @ApiModelProperty(value = "是否仅白名单", hidden = true)
    private Boolean whiteOnly;

    @JsonIgnore
    @ApiModelProperty(value = "是否显示真实库存", hidden = true)
    private Boolean showRealNum;

    @JsonIgnore
    @ApiModelProperty(value = "虚拟销量", hidden = true)
    private Integer simulatedSales;

    @ApiModelProperty(value = "用户可以合成上限")
    private Integer userMaxNum;

    @ApiModelProperty(value = "用户可以单次合成上限")
    private Integer userSingleMaxNum;

    @ApiModelProperty(value = "用户剩余可参与次数, null表示无上限")
    private Integer remainNum;

    @JsonIgnore
    @ApiModelProperty(value = "是否显示[1:显示;0:不显示]", hidden = true)
    private Boolean show;

    @ApiModelProperty(value = "活动状态,[1:未开始;2:进行中;3:已结束]")
    private Integer status;

    @ApiModelProperty(value = "公告ID")
    private Long msgId;
    
    @ApiModelProperty(value = "公告详情")
    private SysAnnouncementMsgVo msgDetail;

    @ApiModelProperty(value = "规则ID")
    private Long planId;

    @ApiModelProperty(value = "投入方案列表")
    private List<SynthesisPlanConsumeDetailVo> consumeList;

    @ApiModelProperty(value = "产出结果列表")
    private List<SynthesisPlanResultDto> resultList;

    @JsonIgnore
    @ApiModelProperty(value = "是否开启持图", hidden = true)
    private Integer hold;


    ////////////////////以下数据仅供业务处理////////////////////////
    @JsonIgnore
    @ApiModelProperty(value = "是否开启白名单", hidden = true)
    private Boolean white;

    @JsonIgnore
    @ApiModelProperty(value = "白名单购买时间", hidden = true)
    private LocalDateTime whiteTime;
}
